#include "../decoder_conf.h"

#if DECODER_FS == DECODER_FS_STDIO
#include "../decoder_fs.h"

#include <stdio.h>

void *DecoderFs::openFile(const char *path)
{
    FILE *file = fopen(path, "rb");

    return file;
}

void DecoderFs::closeFile(void *file)
{
    fclose((FILE *)file);
}

void DecoderFs::seekFile(void *file, int pos, Whence whence)
{
    fseek((FILE *)file, pos, whence);
}

size_t DecoderFs::readFile(void *file, uint8_t *buf, size_t cnt)
{
    int ret = fread(buf, 1, cnt, (FILE *)file);

    return (int32_t)(ret) < 0 ? 0 : ret;
}

size_t DecoderFs::sizeofFile(void *file)
{
    long pos = ftell((FILE *)file);

    fseek((FILE *)file, 0, SEEK_END);  // 将文件位置指针移动到文件的末尾
    long size = ftell((FILE *)file);   // 获取当前文件位置指针的位置

    fseek((FILE *)file, pos, SEEK_SET);  // 将文件位置指针移动到原位

    return size;
}

#endif
